<?php
/**
 * 文件功能名称 :
 * Author     : Kou ( 1002488466@qq.com )
 * CreateTime : 2021/11/27 17:09
 * Description: 无描述
 * Version    : 1.1.0
 */

class loginController extends  grace{
    public $ip = '' ;
    /*
     * 登录页面
     */
    public  function  index()
    {
        //如果未登录，但是有session，则清空session，避免之前session堆积，继续登录
        if(!empty(getSession("email"))){
            header('location:'.PG_SROOT);
        }
    }

    /**
     * 登录验证
     */
    public function logincheck(){
        if(!PG_POST){  $this->json(" 操作异常");}
        if(empty($_SESSION['pgVcode'])){  $this->json("验证码错误",false );}
        //对比验证码是否正确
        if(strtolower($_POST['vercode']) != strtolower(getSession('pgVcode'))){   $this->json("验证码错误" ,false); }
        //定义验证规则
        $checkRules = array(
            'email'         =>  array("string"   ,  "5,20"  , "邮箱格式错误!"),
            'password'      =>  array("string"  , "6,16"  ,"密码长度应在6-16个字!")
        );
        $dataChecker = new phpGrace\tools\dataChecker($_POST,$checkRules);
        $res = $dataChecker->check();
        if(!$res){  $this->json($dataChecker->error ,false);}
        $this->ip = \phpGrace\tools\ip::getIp();
        //对比用户名
        $m = db("manager_user");
        $arr = $m->where('email = ?', $_POST['email'])->fetch();
        if(!is_array($arr)) {
            unset($_SESSION['pgVcode']);
            $this->writeLog(1); //写入日志 用户名错误
            $this->json("用户名、密码不匹配!", false);
        }
        //比对密码
        $password = phpGrace\tools\md5::getMd5($arr['password']);
        if(md5(md5($_POST['password'])) != $password) {
            unset($_SESSION['pgVcode']);
            $this->writeLog(2);//写入日志 密码错误
            $this->json("用户名、密码不匹配！", false);
        }
        //判断用户是否禁用
        if($arr['status']==1){ $this->json("该账户已被禁用",false);  }
        //删除数组里面的密码
        unset($arr['password']);
        //账号密码都对, 注册session，将该用户的所有信息(除了密码外)都写入session
        setSession("admin"    ,    $arr );
        //更新管理员表里面的登录时间和登录ip
        $ManagerTable = array("manager_login_time"=>time(),'manager_ip'=>$this->ip);
        $m->where('id = ? ',$arr['id'])->update($ManagerTable);
        //记录登录日志 登录成功
        $this->writeLog(3);
        //最终成功，返回登录信息
        $returnData = array('home'=>PG_SROOT,'msg'=>"登录成功，页面即将跳转.....");
        $this->json($returnData,'200');
    }

    /*
     * 写入日志
     * @parmay $type  1：用户名错误，2：密码错误，3：登录成功
     * */
    private function writeLog($type){
        $loginLogs['login_log_type']    =   $type;
        $loginLogs['login_log_ip']      =   $this->ip;
        $loginLogs['login_log_email']   =   getSession('email');
        $loginLogs['login_log_time']    =   time();
        $log = db('manager_login_logs');
        $log->add($loginLogs);
    }

    /**
     * 验证码绘制
     */
    public function vcode(){
        $vcode =  new phpGrace\tools\verifyCode(86,36,4);
        $vcode->draw();
    }

    //注销退出
    public function logoff(){
        removeSession('email');
        header('location:'.PG_SROOT.'login');
    }
}